#include <algorithm>
#include <iostream>
#include <limits>
#include <ostream>
using namespace std;
class Time{
friend Time operator+(const Time &t1,const Time &t2);
friend Time operator-(const Time &t1,const Time &t2);
friend Time operator*(const Time &t1, double n);
friend Time operator*(double m,const Time &t){
	return t*m;
}
friend ostream& operator<<(ostream &os,const Time &t);
	private:
		int hours;
		int minutes;
	public:
		Time();
		Time(int h,int m=0);
		void Addmin(int m);
		void AddHr(int h);
		void Reset(int h=0,int m=0);
};

int main()
{
	Time aida(3,35);
	Time tosca(2,48);
	Time temp;
	cout<<"Aida and Tosca:\n";
	cout<<aida<<"; "<<tosca<<endl;
	temp=aida+tosca;
	cout<<"Aida + Tosca: "<<temp<<endl;
	temp=aida*1.17;
	cout<<"Aida * 1.17: "<<temp<<endl;
	cout<<"10.0 * Tosca: "<<10.0*tosca<<endl;
	return 0;
}
Time::Time()
{
	hours=minutes-0;
}
Time::Time(int h,int m)
{
	hours=h;
	minutes=m;
}
void Time:: Addmin(int m)
{
	minutes+=m;
	hours+=minutes/60;
	minutes%=60;
}
void Time::AddHr(int h)
{
	hours+=h;
}
void Time::Reset(int h,int m)
{
	hours=h;
	minutes=m;
}
Time operator+(const Time &t1,const Time &t2)
{
	Time sum;
	sum.minutes=t1.minutes+t2.minutes;
	sum.hours=t1.hours+t2.hours+sum.minutes/60;
	sum.minutes%=60;
	return sum;
}
Time operator-(const Time &t1,const Time &t2)
{
	Time diff;
	int tot1,tot2;
	tot1=t2.minutes+60*t2.hours;
	tot2=t1.minutes+60*t1.hours;
	diff.minutes=(tot2-tot1)%60;
	diff.hours=(tot2-tot1)/60;
	return diff;
}
Time operator*(const Time &t,double mult)
{
	Time result;
	long totalminutes=t.hours*mult*60+t.minutes*mult;
	result.hours=totalminutes/60;
	result.minutes=totalminutes%60;
	return result;
}
ostream& operator<<(ostream &os,const Time &t)
{
	os<<t.hours<<" hours, "<<t.minutes<<" minutes";
	return os;
}
